<?php
/**
 * 微信群管理API逻辑
 * @author 王勇程 <laughskydragon@qq.com>
 */

namespace app\api\logic;

use app\common\logic\WechatGroup as CommonWechatGroup;

/**
 * 微信群管理接口逻辑
 */
class WechatGroup extends ApiBase
{
    
    public static $commonWechatGroupLogic = null;
    
    /**
     * 基类初始化
     */
    public function __construct()
    {
        // 执行父类构造方法
        parent::__construct();
        
        empty(static::$commonWechatGroupLogic) && static::$commonWechatGroupLogic = new CommonWechatGroup();
    }
    
    /**
     * 获取群组列表
     * @author 王勇程 <laughskydragon@qq.com>
     * @param array $data
     * @return array
     */
    public function getGroupList($data = [])
    {
        // 1. JWT解析获取user_id
        $token = $data['user_token'] ?? '';
        if (!empty($token)) {
            $userData = get_user_by_token($token);
            $data['user_id'] = $userData['user_id'];
        }

        // 2. 调用getWhere方法
        $where = static::$commonWechatGroupLogic->getWhere($data);

        // 3. 调用common层业务逻辑
        $result = static::$commonWechatGroupLogic->getGroupList($where);

        return $result;
    }
    
    /**
     * 获取可加入的群列表
     */
    public function getAvailableGroups($data = [])
    {
        // JWT解析用户信息
        $token = $data['user_token'] ?? '';
        if (!empty($token)) {
            $userData = get_user_by_token($token);
            $data['user_id'] = $userData['user_id']; // 普通用户使用user_id
        }
        
        $result = static::$commonWechatGroupLogic->getAvailableGroups($data);
        
        // 查询方法直接返回数据
        return $result;
    }
    
    /**
     * 获取群详情
     */
    public function getGroupDetail($data = [])
    {
        // JWT解析用户信息
        $token = $data['user_token'] ?? '';
        if (!empty($token)) {
            $userData = get_user_by_token($token);
            $data['user_id'] = $userData['user_id']; // 普通用户使用user_id
        }
        
        $result = static::$commonWechatGroupLogic->getGroupDetail($data);
        
        // 查询方法直接返回数据
        return $result;
    }
    
    /**
     * 申请加入群聊
     */
    public function applyJoinGroup($data = [])
    {
        // JWT解析用户信息
        $token = $data['user_token'] ?? '';
        if (!empty($token)) {
            $userData = get_user_by_token($token);
            $data['user_id'] = $userData['user_id']; // 普通用户使用user_id
        }
        
        $result = static::$commonWechatGroupLogic->applyJoinGroup($data);
        
        // 处理common层返回的[状态码, 消息, 数据]格式
        if (is_array($result) && isset($result[0])) {
            if ($result[0] == RESULT_SUCCESS) {
                return isset($result[2]) ? $result[2] : '申请成功';
            } else {
                return $this->returnError($result[1] ?? '申请失败');
            }
        }
        
        return $result;
    }
    
    /**
     * 获取群统计信息
     */
    public function getGroupStats($data = [])
    {
        // JWT解析用户信息
        $token = $data['user_token'] ?? '';
        if (!empty($token)) {
            $userData = get_user_by_token($token);
            $data['user_id'] = $userData['user_id']; // 普通用户使用user_id
        }
        
        $result = static::$commonWechatGroupLogic->getGroupStats($data);
        
        // 查询方法直接返回数据
        return $result;
    }
    
    /**
     * 举报群聊
     */
    public function reportGroup($data = [])
    {
        // JWT解析用户信息
        $token = $data['user_token'] ?? '';
        if (!empty($token)) {
            $userData = get_user_by_token($token);
            $data['user_id'] = $userData['user_id']; // 普通用户使用user_id
        }
        
        $result = static::$commonWechatGroupLogic->reportGroup($data);
        
        // 处理common层返回的[状态码, 消息, 数据]格式
        if (is_array($result) && isset($result[0])) {
            if ($result[0] == RESULT_SUCCESS) {
                return isset($result[2]) ? $result[2] : '举报成功';
            } else {
                return $this->returnError($result[1] ?? '举报失败');
            }
        }
        
        return $result;
    }
}